package com.etc.service.impl;

import com.etc.common.MyException;
import com.etc.dao.UserMastMapper;
import com.etc.po.UserMast;
import com.etc.service.IUserMastService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
public class UserMastServiceImp implements IUserMastService {

    @Autowired
    UserMastMapper mapper;

    @Override
    public List<UserMast> findAll() {

        return mapper.selectAll();
    }

    // 事务切面
    // 只要发生异常就回滚，
    // 事务传播级别 required  a（）方法中调用b();  b()中required有事务就用有的，没有事务就创建新事务。 其他的自己百度
    // TX-manager： 开始的时候开启链接，结束的时候commit,异常的时候rollback  最后close()资源
    @Transactional(rollbackFor = Exception.class, propagation= Propagation.REQUIRED)
    @Override
    public void add(String uname) throws MyException {

        int r = mapper.insert(uname);

        // 测试回滚
        if ("tom".equals(uname)) {
            // sqlsession.rollback();

            throw new MyException("回滚");
        }
    }
}
